package com.lemon.mybatisplus.base;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lemon.core.web.Result;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author 李猛
 * @datetime 2023/4/15 17:15
 * @description 接口对象
 */
public interface BaseService<P, D> extends IService<P> {
    //添加
    Result<String> add(P p);

    //批量添加
    Result<String> adds(List<P> pList);

    //根据ID删除
    Result<String> delById(Long id);

    //根据ID集合批量删除
    Result<String> delByIds(Collection<Long> ids);

    //根据ID修改
    Result<String> update(P p);

    //根据集合批量修改
    Result<String> updates(List<P> pList);

    //新增或修改
    Result<String> addOrUpdate(P p);

    //根据ID查询
    Result<P> getById(Long id);

    //根据ID查询集合
    Result<List<P>> getByIds(Collection<Long> ids);

    //Map条件查询分页数据
    Result<Page<P>> pageByMap(Map<String, Object> map);

    //DTO实体类条件查询
    Result<List<P>> list(D d);

    //DTO实体类条件查询分页数据
    Result<Page<P>> page(D d);

    //DTO实体类条件查询数据条数
    Result<Long> count(D d);

    //启用
    Result<String> enable(Collection<Long> ids);

    //停用
    Result<String> unable(Collection<Long> ids);
}
